﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BLToolkit.DataAccess;
using BLToolkit.Mapping;

namespace Data_Access_Layer
{
    [TableName("Order")]
   public class Order:Devsoft.DB.Models.Flat.Model<Order>
    {
        /// <summary>
        /// Gán hoặc lấy giá trị của mã hóa đơn
        /// </summary>
        [PrimaryKey,Identity]
        public int Id { get; set; }

        /// <summary>
        /// Gán hoặc lấy giá trị kiểu hóa đơn (mua hoặc bán)
        /// </summary>
        public bool Type { get; set; }

		///// <summary>
		///// Lấy kiểu hóa đơn là mua hoặc bán dựa vào giá trị true false của Type
		///// </summary>
		//public string Type_Str
		//{
		//	get { return (Type) ? "Bán" : "Mua"; }
		//}


        /// <summary>
        /// Gán hoặc lấy giá trị của ngày lập hóa đơn
        /// </summary>
        public DateTime OrderDate { get; set; }

      
        /// <summary>
        /// Gán hoặc lấy giá trị nhà cung cấp
        /// </summary>
        public int? SupId { get; set; }

        /// <summary>
        /// Gán hoặc lấy giá trị của nhân viên lập hóa đơn
        /// </summary>
        public int EmpId { get; set; }
        /// <summary>
        /// Gán hoặc lấy giá trị của bàn được lập hóa đơn
        /// </summary>
        public int? DeskId { get; set; }

        /// <summary>
        /// Gán hoặc lấy giá trị thời gian bắt đầu sử dụng của bạn
        /// </summary>
        public DateTime? TimeIn { get; set; }
        /// <summary>
        /// Gán hoặc lấy giá trị thời gian ngừng sử dụng của bàn
        /// </summary>
        public DateTime? TimeOut { get; set; }
        /// <summary>
        /// Gán hoặc lấy giá trị của số tiền bàn mà khách hàng đã dùng
        /// </summary>
        public float Cash { get; set; }
        /// <summary>
        /// Gán hoặc lấy số tiền giảm giá
        /// </summary>
        public float Discount { get; set; }
        /// <summary>
        /// Gán hoặc lấy giá trị tổng tiền hóa đơn
        /// </summary>
        public float Total { get; set; }

        /// <summary>
        ///Gán hoặc lấy trạng thái của hóa đơn (đã thanh toán hay chưa, chưa=false, rồi =true)
        /// </summary>
        public bool Status { get; set; }



        /// <summary>
        ///Gán hoặc lấy trạng thái đã xóa? của hóa đơn 
        /// </summary>
        public bool Deleted { get; set; }

        /// <summary>
        /// Gán hoặc lấy ghi chú của hóa đơn
        /// </summary>
        public string Notes { get; set; }

        /// <summary>
        ///Lấy trạng thái đã thanh toán hoặc chưa
        /// </summary>
        [MapIgnore]
        public string GetStatus
        {
            get { return (Status) ? "Đã thanh toán" : "Chưa thanh toán"; }
        }




        /// <summary>
        /// Thông tin về nhà cung cấp
        /// </summary>
        //[Association(ThisKey = "SupId", OtherKey = "Id", CanBeNull = false)]
        //public Supplier Supplier { get; set; }

        /// <summary>
        /// Thông tin về hàng hóa sử dụng
        /// </summary>
        [Association(ThisKey = "DeskId", OtherKey = "Id", CanBeNull = false)]
        public Desk Desk { get; set; }


        /// <summary>
        /// Thông tin về nhân viên lập hóa đơn
        /// </summary>
        [Association(ThisKey = "EmpId", OtherKey = "Id", CanBeNull = false)]
        public Employee Employee { get; set; }


        /// <summary>
        /// Danh sách chi tiết hóa đơn
        /// </summary>
        [Association(ThisKey = "Id", OtherKey = "OrderId", CanBeNull = false)]
        public List<OrderDetail> OrderDetails { get; set; }
    }
}
